package sms

//func SendCode(nationCode int, mobile, ip string) error {
//	configPri := cache.GetConfigPri()
//	code := util.I2S(string2.RandInt(1000, 9999))
//	switch configPri.SmsSelecter {
//	case "qcloud":
//		return qcloudsms(configPri, nationCode, mobile, code, ip)
//	case "aliyun":
//		return aliyunsms(configPri, nationCode, mobile, code, ip)
//	case "ihuyi":
//		return ihuyisms(configPri, nationCode, mobile, code, ip)
//	case "cry":
//		return crysms(configPri, nationCode, mobile, code, ip)
//	default:
//		return errors.New("系统未配置短信服务接口")
//	}
//}
//
//func qcloudsms(configPri *models_main.ConfigPri, nationCode int, mobile, code, ip string) error {
//
//	/* 必要步骤：
//	 * 实例化一个认证对象，入参需要传入腾讯云账户密钥对secretId，secretKey。
//	 * 这里采用的是从环境变量读取的方式，需要在环境变量中先设置这两个值。
//	 * 你也可以直接在代码中写死密钥对，但是小心不要将代码复制、上传或者分享给他人，
//	 * 以免泄露密钥对危及你的财产安全。
//	 * CAM密匙查询: https://console.cloud.tencent.com/cam/capi*/
//	credential := common.NewCredential(
//		configPri.QsmsSecretid,
//		configPri.QsmsSecretkey,
//	)
//	/* 非必要步骤:
//	 * 实例化一个客户端配置对象，可以指定超时时间等配置 */
//	cpf := profile.NewClientProfile()
//
//	/* SDK默认使用POST方法。
//	 * 如果你一定要使用GET方法，可以在这里设置。GET方法无法处理一些较大的请求 */
//	cpf.HttpProfile.ReqMethod = "POST"
//
//	/* SDK有默认的超时时间，非必要请不要进行调整
//	 * 如有需要请在代码中查阅以获取最新的默认值 */
//	// cpf.HttpProfile.ReqTimeout = 5
//
//	/* SDK会自动指定域名。通常是不需要特地指定域名的，但是如果你访问的是金融区的服务
//	 * 则必须手动指定域名，例如sms的上海金融区域名： sms.ap-shanghai-fsi.tencentcloudapi.com */
//	cpf.HttpProfile.Endpoint = "sms.tencentcloudapi.com"
//
//	/* SDK默认用TC3-HMAC-SHA256进行签名，非必要请不要修改这个字段 */
//	cpf.SignMethod = "HmacSHA1"
//
//	/* 实例化要请求产品(以sms为例)的client对象
//	 * 第二个参数是地域信息，可以直接填写字符串ap-guangzhou，或者引用预设的常量 */
//	client, _ := sms.NewClient(credential, "ap-guangzhou", cpf)
//
//	/* 实例化一个请求对象，根据调用的接口和实际情况，可以进一步设置请求参数
//	 * 你可以直接查询SDK源码确定接口有哪些属性可以设置
//	 * 属性可能是基本类型，也可能引用了另一个数据结构
//	 * 推荐使用IDE进行开发，可以方便的跳转查阅各个接口和数据结构的文档说明 */
//	request := sms.NewSendSmsRequest()
//
//	/* 基本类型的设置:
//	 * SDK采用的是指针风格指定参数，即使对于基本类型你也需要用指针来对参数赋值。
//	 * SDK提供对基本类型的指针引用封装函数
//	 * 帮助链接：
//	 * 短信控制台: https://console.cloud.tencent.com/smsv2
//	 * sms helper: https://cloud.tencent.com/document/product/382/3773 */
//
//	/* 短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppId，示例如1400006666 */
//	request.SmsSdkAppId = common.StringPtr(configPri.QsmsAppid)
//	/* 短信签名内容: 使用 UTF-8 编码，必须填写已审核通过的签名，签名信息可登录 [短信控制台] 查看 */
//	request.SignName = common.StringPtr(configPri.QsmsSign)
//	/* 国际/港澳台短信 SenderId: 国内短信填空，默认未开通，如需开通请联系 [sms helper] */
//	request.SenderId = common.StringPtr("")
//	/* 用户的 session 内容: 可以携带用户侧 ID 等上下文信息，server 会原样返回 */
//	request.SessionContext = common.StringPtr(code)
//	/* 短信码号扩展号: 默认未开通，如需开通请联系 [sms helper] */
//	request.ExtendCode = common.StringPtr("")
//	/* 模板参数: 若无模板参数，则设置为空*/
//	request.TemplateParamSet = common.StringPtrs([]string{code}) //common.StringPtrs([]string{"EX-" + code})
//	/* 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看 */
//	request.TemplateId = common.StringPtr(configPri.QsmsTplid)
//	/* 下发手机号码，采用 E.164 标准，+[国家或地区码][手机号]
//	 * 示例如：+8613711112222， 其中前面有一个+号 ，86为国家码，13711112222为手机号，最多不要超过200个手机号*/
//	fullMobile := fmt.Sprintf("+%d%s", nationCode, mobile)
//	request.PhoneNumberSet = common.StringPtrs([]string{fullMobile})
//
//	// 通过client对象调用想要访问的接口，需要传入请求对象
//	response, err := client.SendSms(request)
//	fmt.Println("respsone返回", response.ToJsonString())
//	// 处理异常
//	if val, ok := err.(*qcloud_errors.TencentCloudSDKError); ok {
//		return fmt.Errorf("code :%s message :%s", val.Code, val.Message)
//	}
//	if err != nil {
//		return err
//	}
//	codeM := &models_main.Smscode{
//		Mobile:     mobile,
//		RequestIp:  ip,
//		CreateTime: time.Now(),
//		Code:       code,
//	}
//	err = db_main.InsertSmscode(nil, codeM)
//	if err != nil {
//		return err
//	}
//	return nil
//}
//
//func aliyunsms(configPri *models_main.ConfigPri, nationCode int, mobile, code, ip string) error {
//	client, err := dysmsapi.NewClientWithAccessKey(configPri.AlismsRegion, configPri.AlismsAppkey, configPri.AlismsAppsecret)
//	/* use STS Token
//	client, err := dysmsapi.NewClientWithStsToken("cn-qingdao", "<your-access-key-id>", "<your-access-key-secret>", "<your-sts-token>")
//	*/
//
//	if err != nil {
//		return err
//	}
//
//	request := dysmsapi.CreateSendSmsRequest()
//	request.Scheme = "https"
//
//	request.PhoneNumbers = fmt.Sprintf("%d%s", nationCode, mobile) //接收短信的手机号码
//	request.SignName = configPri.AlismsSignName                    //短信签名名称
//	request.TemplateCode = configPri.AlismsTPLId                   //短信模板ID
//	request.TemplateParam = fmt.Sprintf("{\"code\":\"%s\"}", code)
//
//	_, err = client.SendSms(request)
//	if err != nil {
//		return err
//	}
//	codeM := &models_main.Smscode{
//		Mobile:     mobile,
//		RequestIp:  ip,
//		CreateTime: time.Now(),
//		Code:       code,
//	}
//	err = db_main.InsertSmscode(nil, codeM)
//	if err != nil {
//		return err
//	}
//	return nil
//}
//
//func ihuyisms(configPri *models_main.ConfigPri, nationCode int, mobile, code, ip string) error {
//	v := url.Values{}
//	_now := strconv.FormatInt(time.Now().Unix(), 10)
//	//fmt.Printf(_now)
//	_account := configPri.IhuyiApiid   //查看用户名 登录用户中心->验证码通知短信>产品总览->API接口信息->APIID
//	_password := configPri.IhuyiApikey //查看密码 登录用户中心->验证码通知短信>产品总览->API接口信息->APIKEY
//	_mobile := mobile
//	_content := "龙门直播 您的验证码是：" + code + "。请不要把验证码泄露给其他人。"
//	v.Set("account", _account)
//	v.Set("password", GetMd5String(_account+_password+_mobile+_content+_now))
//	v.Set("mobile", _mobile)
//	v.Set("content", _content)
//	v.Set("timehelper", _now)
//
//	body := strings.NewReader(v.Encode()) //把form数据编下码
//	client := &http.Client{}
//	req, _ := http.NewRequest("POST", "http://106.ihuyi.com/webservice/sms.php?method=Submit&format=json", body)
//
//	req.Header.Set("Content-Type", "application/x-www-form-urlencoded; param=value")
//	//fmt.Printf("%+v\n", req) //看下发送的结构
//
//	resp, err := client.Do(req) //发送
//	if err != nil {
//		return err
//	}
//	defer resp.Body.Close() //一定要关闭resp.Body
//	data, _ := ioutil.ReadAll(resp.Body)
//	fmt.Println(string(data), err)
//
//	codeM := &models_main.Smscode{
//		Mobile:     mobile,
//		RequestIp:  ip,
//		CreateTime: time.Now(),
//		Code:       code,
//	}
//	err = db_main.InsertSmscode(nil, codeM)
//	if err != nil {
//		return err
//	}
//	return nil
//}
//
//func GetMd5String(s string) string {
//	h := md5.New()
//	h.Write([]byte(s))
//	return hex.EncodeToString(h.Sum(nil))
//}
//
//// OneCloudSP OneCloudSP
//type OneCloudSP struct {
//	AccessKey string
//	Secret    string
//}
//
//func (sp OneCloudSP) sendRequest(apiURL string, params url.Values) []byte {
//	if params == nil {
//		params = map[string][]string{
//			"accesskey": {sp.AccessKey},
//			"secret":    {sp.Secret},
//		}
//	} else {
//		params["accesskey"] = []string{sp.AccessKey}
//		params["secret"] = []string{sp.Secret}
//	}
//	fmt.Println(params)
//	resp, err := http.PostForm(apiURL, params)
//	if err != nil {
//		fmt.Println(err)
//		return nil
//	}
//	defer resp.Body.Close()
//	body, err := ioutil.ReadAll(resp.Body)
//	if err != nil {
//		fmt.Println(err)
//		return nil
//	}
//	fmt.Println(string(body))
//	return body
//}
//
//func crysms(configPri *models_main.ConfigPri, nationCode int, mobile, code, ip string) error {
//	var cry = &OneCloudSP{
//		AccessKey: configPri.CRYKey,
//		Secret:    configPri.CRYSecret,
//	}
//	content := code
//	cry.SendVerifyCode(mobile, content, configPri.CRYSign, configPri.CRYTplid)
//	codeM := &models_main.Smscode{
//		Mobile:     mobile,
//		RequestIp:  ip,
//		CreateTime: time.Now(),
//		Code:       code,
//	}
//	err := db_main.InsertSmscode(nil, codeM)
//	if err != nil {
//		return err
//	}
//	return nil
//}
//
//// SendVerifyCode SendVerifyCode
//func (sp OneCloudSP) SendVerifyCode(mobile, content, sign, templateID string) []byte {
//	apiURL := "http://api.1cloudsp.com/api/v2/single_send"
//
//	params := map[string][]string{"mobile": {mobile},
//		"content":    {content},
//		"sign":       {sign},
//		"templateId": {templateID},
//	}
//	data := sp.sendRequest(apiURL, params)
//	fmt.Println(string(data))
//	return data
//}
